Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

162
Visualizações
¿Cuál es la explicación de esto "(x > 0) - (x < 0) || +x;" con JavaScript

¿Podemos usar un operador menos como operador de comparación?

No pude encontrar una situación como esta.

 function sign(x) { return (x > 0) - (x < 0) || +x; }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No actuará como un operador de comparaciones. Actuará como un operador matemático. Para este trabajo, JavaScript convierte el booleano resultante de x > 0 y x < 0 a cero o uno, luego realiza la resta.

Este es un código extraño, pero válido.

about 4 years ago · Juan Pablo Isaza Relatório

0

Hay dos pasos para describir aquí.

Calcular signo (+1, 0 o -1)

Como ya se señaló en la respuesta de Elia Soares , JavaScript convierte implícitamente la expresión booleana en números al hacer una resta. true se convertirá en 1 y false en 0.

 console.log(+true); console.log(+false); let x = 20; console.log(+(x > 0)); console.log(+(x < 0));

entonces, hacer (x > 0) - (x < 0) significa:

  • Si x es positivo, obtenemos 1 - 0 , lo que da 1 .

  • Si x es negativo, obtenemos 0 - 1 , lo que da -1 .

  • Si x es cero, obtenemos 0 - 0 , lo que da 0.

Esto ya parece bueno para crear una función de sign(x) como se espera normalmente .

gráfico de función matemática de signo

Manejar indefinido

Sin embargo, también considere undefined en esta fórmula: cualquier comparación dará false , por lo que la resta anterior dará cero.

Eso es un poco peligroso, podría ser que olvidó asignar un valor a la variable, que es un error común cuando escribe código.

Por eso el || +x Se agregó || +x .

|| en javascript significa:

Evalúa el lado izquierdo. Si es cierto , devuelve el lado izquierdo. De lo contrario, devuelva el lado derecho.

+1 y -1 son verdaderos y 0 es falso , por lo que la expresión completa (x > 0) - (x < 0) || +x se evaluará como +x si y solo si la resta da cero.

Si x es cero, seguirá dando +0, que es 0.

Si x es null , esto dará +null que es 0.

Si x no está undefined , dará +undefined , que es NaN .

Obtener un NaN en su cálculo hará que rápidamente todos sus resultados posteriores sean NaN , advirtiéndole que había algo indefinido que probablemente olvidó.

Tenga en cuenta que +x aún se evalúa como 0 si x es null o cadena vacía '' , por lo que este código no cambiará el resultado cero (quizás inesperado) para esos casos especiales.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda